/**
 * 全局数据
 * @method getDictLabel 获取字典标题
 * @method getDictList 获取字典列表
 * @method getDistrictLabel 获取地区标题
 * @method getDistrictList 获取地区列表
 * @method getJavaValidatorLabel 获取 Java 校验器标题
 * @method getJavaValidatorParamDescr 获取 Java 校验器参数说明
 * @method getJavaValidatorList 获取 Java 校验器列表
 */
export interface GlobalData {
  getDictLabel: (data: { type: string, value: string }) => string
  getDictList: (type: string) => Dict[]
  getDistrictLabel: (value: string) => string
  getDistrictList: () => District[]
  getJavaValidatorLabel: (clazz: string) => string
  getJavaValidatorParamDescr: (clazz: string) => string
  getJavaValidatorList: () => JavaValidator[]
}

/**
 * 字典
 * @attribute type: string 类型
 * @attribute value: string 值
 * @attribute label: string 标题
 */
export interface Dict {
  type: string
  value: string
  label: string
}

/**
 * 地区
 * @attribute value: string 值
 * @attribute label: string 标题
 * @attribute children: District[] 子地区 [可空]
 */
export interface District {
  value: string
  label: string
  children?: District[]
}

/**
 * Java 校验器
 * @attribute clazz: string java 长类名
 * @attribute label: string 标题
 * @attribute paramDescrs: string[] 参数说明 [可空]
 */
export interface JavaValidator {
  clazz: string
  label: string
  paramDescrs?: string[]
}
